package reconhecimento.model;
import java.util.List;

import reconhecimento.excecao.ImagemNulaException;
import reconhecimento.excecao.ImagensTamanhosDiferentesException;
import reconhecimento.util.Operacao;


public class Padroes extends ImagemList{
	public Padroes(final List<Imagem> imagens) {
		super(imagens);
	}

	public int getMenorDistancia(final Imagem imagem) throws ImagensTamanhosDiferentesException, ImagemNulaException{
		int menorDistancia = Integer.MAX_VALUE;
		Imagem suspeita = null;
		for (int i = 0; i < this.getImagens().size(); i++) {
			final int distancia = Operacao.distanciaHamem(this.getImagem(i), imagem);
//			System.out.println("this.getImagem(i)");
//			System.out.println(this.getImagem(i));
//			System.out.println("imagem");
//			System.out.println(imagem);
			if(distancia < menorDistancia){
				menorDistancia = distancia;
				suspeita = this.getImagem(i);
			}
		}
//		System.err.println(suspeita);
		return menorDistancia;
	}

	public int getSomaDistancia(Imagem imagem) throws ImagensTamanhosDiferentesException, ImagemNulaException {
		int soma = 0;
		for (int i = 0; i < this.getImagens().size(); i++) {
			soma +=Operacao.distanciaHamem(this.getImagem(i), imagem);
		}
		return soma;
	}

	public float getGrade(Imagem imagem) throws ImagensTamanhosDiferentesException, ImagemNulaException {
		float menorDistancia = 1000;
		float distancia = 0;
		for (int i = 0; i < this.getImagens().size(); i++) {
			
			distancia = Operacao.comparaGrades(this.getImagem(i), imagem );
			
			if(distancia < menorDistancia && distancia >= 0) {
			   menorDistancia = distancia;
			}
		}
		
		return menorDistancia;
	}

}
